/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.utils.constantes;

import java.util.ResourceBundle;

import org.apache.commons.lang.StringUtils;

/**
 * @author Holmes Kelly
 */
public enum TypeDestinataireReglement {

    /**
     * 
     */
    TYPE_DEST_ASSURE("ASSURE", "type.destinataire.assure"),

    /**
     * 
     */
    TYPE_DEST_TIERS("TIERS", "type.destinataire.tiers"),

    /**
     * 
     */
    TYPE_DEST_ASSURE_TIERS("ASSURE_TIERS", "type.destinataire.assure.tiers");

    /**
     * libelle client
     */
    private String libelleClient;

    /**
     * type destinataire
     */
    private String typeDestinataire;

    /**
     * @param libelleClient libelle client
     * @param typeDestinataire type destinataire
     */
    private TypeDestinataireReglement(String libelleClient, String typeDestinataire) {
        this.libelleClient = libelleClient;
        this.typeDestinataire = typeDestinataire;
    }

    /**
     * @return the libelleClient
     */
    public String getLibelleClient() {
        return libelleClient;
    }

    /**
     * @return the typeDestinataire
     */
    public String getTypeDestinataire() {
        return typeDestinataire;
    }

    /**
     * @param cle cle libelle typedestinataire
     * @return libelle typedestinataire
     */
    public static String getMessageLibelleService(String cle) {

        ResourceBundle bundle = ResourceBundle.getBundle("fr.generali.accueilclient.accueilclient-services-libelles");

        return bundle.getString(cle);
    }

    /**
     * @param libelleClient libelle client
     * @return libelle typedestinataire
     */
    public static String getLibelleServiceParLiblleClient(String libelleClient) {

        for (TypeDestinataireReglement typeDestinataireRegle : values()) {

            if (StringUtils.equals(libelleClient, typeDestinataireRegle.libelleClient)) {

                return getMessageLibelleService(typeDestinataireRegle.typeDestinataire);
            }
        }

        return StringUtils.EMPTY;
    }

    /**
     * @param libelleClient libelle client
     * @return true si enumeration contient libelle client
     */
    public static boolean containsLibelleClient(String libelleClient) {

        for (TypeDestinataireReglement typeDestinataireRegle : values()) {

            if (StringUtils.equals(libelleClient, typeDestinataireRegle.libelleClient)) {

                return true;
            }
        }
        return false;
    }

}
